package cn.ffcs.uec.common.manager;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.ffcs.uec.common.model.Document;
import cn.ffcs.uec.common.model.Ftp;
import cn.ffcs.uec.common.util.EnvPath;
import cn.ffcs.uec.common.util.FileDocUtil;

/**
 * 
 * @Title:
 * @Description:
 * @author Wang Yiren
 * @版权 FFCS（C） 2017
 * @date 2018年3月7日
 */
@Service("ftpDownloadService")
@Lazy(false)
@Transactional(readOnly = true)
public class FtpDownloadService {

	private static Logger logger = Logger.getLogger(FileDocUtil.class);

	/**
	 * 定时从ftp上抓取文件到本地
	 * @Description:
	 * @author Wang Yiren
	 * @date 2018年3月14日
	 */
//	@Scheduled(cron = "0 20 16 6 * ?")
	public void monthData() {

		String localPath = EnvPath.ftpProPath;  //本地目录
		String remotePath = EnvPath.ftpPath;	//远程目录
		String contains = null;					//过滤条件
		List<Document> documents = getData(localPath, remotePath, contains);
		if (documents == null) {
			logger.error("ftp抓取文件失败");
		}
	}

	/**
	 * @Description:
	 * @param localPath
	 *            本地存储的目录
	 * @param remotePath
	 *            远程目录
	 * @param contains
	 *            过滤器中使用文件名匹配的字符
	 * @return
	 */
	public List<Document> getData(String localPath, String remotePath, String contains) {
		logger.error("获取文件中 ，本地路径 " + localPath + " 远程路径 " + remotePath);
		Ftp fp = getEnvironment();
		List<Document> documents = null;
		try {
			documents = FileDocUtil.getFileAndDownload(fp, contains, localPath, remotePath);
			if (null == documents) {
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return documents;
	}

	/**
	 * 根据环境变量不同，连接不同的FTP
	 * 
	 * @method getEnvironment
	 * @author WCNGS@QQ.COM
	 * @version
	 * @see
	 * @param
	 * @return xyz.wongs.es.utils.pojo.Ftp
	 * @exception @date
	 *                2018/1/23 13:09
	 */
	public Ftp getEnvironment() {
		Ftp fp = null;
		Boolean flag = true;
		if (flag) {
			// 生产环境ftp
			//fp = new Ftp("132.63.10.96", 21, "ds_ftp_815", "ds_ftp_815", ".");
			//生产环境sftp  136.224.123.225 / 10.17.0.215
			fp = new Ftp("136.224.123.225", 21, "oracle", "Ffcs_2018", ".");
		} else {
			// 私服ftp
			fp = new Ftp("123.206.118.219", 21, "uac", "AbcL0ve$%", ".");
		}
		return fp;
	}
}
